/*
 * BuildMapFResultSearch.java
 *
 * Created on 5 de mayo de 2006, 20:27
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package fmap.actions.mapF;

import fmap.dao.NodeDao;
import fmap.model.MapF;
import fmap.model.Node;
import java.util.Vector;

/**
 *
 * @author javi
 */
public class InsertMapFResultSearch
{
    
    /**
     *  Recibe los nodos encontrados en el mapa de ficheros a partir de los cuales construiremos el mapa de ficheros
     *  que se visualice en la busqueda
     */
    public InsertMapFResultSearch ( Vector vNode, MapF mapF )
    {

System.out.print ("InsertMapFResultSearch");


        for( int i=0; i<vNode.size (); i++ )
        {
            Node n = (Node)vNode.get (i);

            insertNodesParentToRoot ( n, "1", n.getIdTable () );
        }
        
    }
    
    
    private void insertNodesParentToRoot ( Node n, String nameFound, int idTable )
    {
        
        // insertamos el nodo en el resultado de la busqueda
        
        //Comprobar primero si existe y si es asi actualizar nameFound = 1 siempre que el parametro que reciba este metodo sea nameFound = 1
        if ( ! new NodeDao ().existNodeResultSearch (n.getIdNode (), n.getIdMapF (), idTable ) )
        {
            new NodeDao ().insertNodeResultSearch ( n, nameFound, idTable );
        }
        else if( nameFound == "1" )
        {
            new NodeDao ().updateNodeResultSearch ( n, "1", idTable );
        }
        
        // averiguamos si tiene nodo padre, si lo tiene volvemos a llamar a este metodo pasando como argumento el nodo padre del actual
        // si este nodo padre ya existe en la BD terminamos con esta rama ya que ha sido insertado antes como un nodo resultante de la busqueda
        
        if( n.getIdParent () != -1 )
        {        
            Node nParent = new NodeDao ().selectNodeParent ( n.getIdMapF (), n.getIdParent (), n.getIdTableParent () );

            if( nParent != null ) insertNodesParentToRoot ( nParent, "0", nParent.getIdTable () );
        }
    }

}
